<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // const obj = {
      //     name: "wxy",
      //     age: 18,
      //     description:{
      //         height: 180,
      //         weight: 80
      //     }
      // }

      // const a = obj //

      // 原型链继承方式
      function Student(name, age, sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;

        return undefined;
      }

      Student.prototype.learn = function () {
        console.log("学习中");
      };

      function GoodStudent(name, age, sex, prise) {
        Student.call(this, name, age, sex); // call 可以改变Student的this指向
        this.prise = prise;
      }

      GoodStudent.prototype = Object.create(Student.prototype); // 这是es提供的方法 ，会将 GoodStudent.prototype.__proto__ 指向 Student.prototype

      var gst = new GoodStudent("wxy", 18, "male", 1000);
      gst.learn(); // 这是一个右查询  [[GET]],查询过程是，先在对象身上找，如果找不到会沿着原型链上找
      // gst 身上没有，就会在对象的隐式原型上查找 gst.__proto__ = GoodStudent.prototype
      // GoodStudent.prototype.__proto__ = Object.prototype = Object.prototype.__proto__ = null
      // 所以在原型链上没办法找到，我们可以将 GoodStudent.prototype.__proto__ 不指向 Objecgt.prototype 而是将其指向 Student.prototype 这样就
      // 可以在原型链上找到这个方法
    </script>
  </body>
</html>
